package dominioEntity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

import dominioTO.ListaPreciosTO;
import dominioTO.ProveedorTO;

//Proveedor lado Servidor DAO (Persistencia)
@Entity
public class Proveedor implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Id
	private String cuit;
	private String nombre;
	private String direccion;
	private String telefono;
	
	@LazyCollection(LazyCollectionOption.FALSE)
	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "proveedor_id")	
	private List<ListaPrecios> listasPrecios;
	
	//Getters & Setters
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getCuit() {
		return cuit;
	}
	public void setCuit(String cuit) {
		this.cuit = cuit;
	}
	public String getDireccion() {
		return direccion;
	}
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
	public String getTelefono() {
		return telefono;
	}
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}
	public List<ListaPrecios> getListasPrecios() {
		return listasPrecios;
	}
	public void setListasPrecios(List<ListaPrecios> listasPrecios) {
		this.listasPrecios = listasPrecios;
	}
	
	public ProveedorTO getDTO()
	{
		ProveedorTO dto = new ProveedorTO();
		dto.setCuit(cuit);
		dto.setNombre(nombre);
		dto.setDireccion(direccion);
		dto.setTelefono(telefono);
	
		List<ListaPreciosTO> listasTO = new ArrayList<ListaPreciosTO>();
		if (listasPrecios!=null)
		{
			for(ListaPrecios auxListas:listasPrecios)
			{
				listasTO.add(auxListas.getDTO(dto));
			}
				
		}
		dto.setListasPrecios(listasTO);	
		return dto;
	}
	
	
	@Override
	public String toString() {
		return "Proveedor [cuit=" + cuit + ", nombre=" + nombre
				+ ", direccion=" + direccion + ", telefono=" + telefono
				+ ", listasPrecios=" + listasPrecios + "]";
	}
	

}
